
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __java_util_concurrent_ConcurrentSkipListMap$SubMap__
#define __java_util_concurrent_ConcurrentSkipListMap$SubMap__

#pragma interface

#include <java/util/AbstractMap.h>

class java::util::concurrent::ConcurrentSkipListMap$SubMap : public ::java::util::AbstractMap
{

public: // actually package-private
  ConcurrentSkipListMap$SubMap(::java::util::concurrent::ConcurrentSkipListMap *, ::java::lang::Object *, jboolean, ::java::lang::Object *, jboolean, jboolean);
private:
  jboolean tooLow(::java::lang::Object *);
  jboolean tooHigh(::java::lang::Object *);
  jboolean inBounds(::java::lang::Object *);
  void checkKeyBounds(::java::lang::Object *);
  jboolean isBeforeEnd(::java::util::concurrent::ConcurrentSkipListMap$Node *);
  ::java::util::concurrent::ConcurrentSkipListMap$Node * loNode();
  ::java::util::concurrent::ConcurrentSkipListMap$Node * hiNode();
  ::java::lang::Object * lowestKey();
  ::java::lang::Object * highestKey();
  ::java::util::Map$Entry * lowestEntry();
  ::java::util::Map$Entry * highestEntry();
  ::java::util::Map$Entry * removeLowest();
  ::java::util::Map$Entry * removeHighest();
  ::java::util::Map$Entry * getNearEntry(::java::lang::Object *, jint);
  ::java::lang::Object * getNearKey(::java::lang::Object *, jint);
public:
  jboolean containsKey(::java::lang::Object *);
  ::java::lang::Object * get(::java::lang::Object *);
  ::java::lang::Object * put(::java::lang::Object *, ::java::lang::Object *);
  ::java::lang::Object * remove(::java::lang::Object *);
  jint size();
  jboolean isEmpty();
  jboolean containsValue(::java::lang::Object *);
  void clear();
  ::java::lang::Object * putIfAbsent(::java::lang::Object *, ::java::lang::Object *);
  jboolean remove(::java::lang::Object *, ::java::lang::Object *);
  jboolean replace(::java::lang::Object *, ::java::lang::Object *, ::java::lang::Object *);
  ::java::lang::Object * replace(::java::lang::Object *, ::java::lang::Object *);
  ::java::util::Comparator * comparator();
private:
  ::java::util::concurrent::ConcurrentSkipListMap$SubMap * newSubMap(::java::lang::Object *, jboolean, ::java::lang::Object *, jboolean);
public:
  ::java::util::concurrent::ConcurrentSkipListMap$SubMap * ConcurrentSkipListMap$SubMap$subMap(::java::lang::Object *, jboolean, ::java::lang::Object *, jboolean);
  ::java::util::concurrent::ConcurrentSkipListMap$SubMap * ConcurrentSkipListMap$SubMap$headMap(::java::lang::Object *, jboolean);
  ::java::util::concurrent::ConcurrentSkipListMap$SubMap * ConcurrentSkipListMap$SubMap$tailMap(::java::lang::Object *, jboolean);
  ::java::util::concurrent::ConcurrentSkipListMap$SubMap * ConcurrentSkipListMap$SubMap$subMap(::java::lang::Object *, ::java::lang::Object *);
  ::java::util::concurrent::ConcurrentSkipListMap$SubMap * ConcurrentSkipListMap$SubMap$headMap(::java::lang::Object *);
  ::java::util::concurrent::ConcurrentSkipListMap$SubMap * ConcurrentSkipListMap$SubMap$tailMap(::java::lang::Object *);
  ::java::util::concurrent::ConcurrentSkipListMap$SubMap * ConcurrentSkipListMap$SubMap$descendingMap();
  ::java::util::Map$Entry * ceilingEntry(::java::lang::Object *);
  ::java::lang::Object * ceilingKey(::java::lang::Object *);
  ::java::util::Map$Entry * lowerEntry(::java::lang::Object *);
  ::java::lang::Object * lowerKey(::java::lang::Object *);
  ::java::util::Map$Entry * floorEntry(::java::lang::Object *);
  ::java::lang::Object * floorKey(::java::lang::Object *);
  ::java::util::Map$Entry * higherEntry(::java::lang::Object *);
  ::java::lang::Object * higherKey(::java::lang::Object *);
  ::java::lang::Object * firstKey();
  ::java::lang::Object * lastKey();
  ::java::util::Map$Entry * firstEntry();
  ::java::util::Map$Entry * lastEntry();
  ::java::util::Map$Entry * pollFirstEntry();
  ::java::util::Map$Entry * pollLastEntry();
  ::java::util::NavigableSet * ConcurrentSkipListMap$SubMap$keySet();
  ::java::util::NavigableSet * navigableKeySet();
  ::java::util::Collection * values();
  ::java::util::Set * entrySet();
  ::java::util::NavigableSet * descendingKeySet();
public: // actually package-private
  ::java::util::Iterator * keyIterator();
  ::java::util::Iterator * valueIterator();
  ::java::util::Iterator * entryIterator();
public:
  ::java::util::SortedMap * subMap(::java::lang::Object *, ::java::lang::Object *);
  ::java::util::concurrent::ConcurrentNavigableMap * subMap(::java::lang::Object *, ::java::lang::Object *);
  ::java::util::NavigableMap * subMap(::java::lang::Object *, jboolean, ::java::lang::Object *, jboolean);
  ::java::util::concurrent::ConcurrentNavigableMap * subMap(::java::lang::Object *, jboolean, ::java::lang::Object *, jboolean);
  ::java::util::SortedMap * tailMap(::java::lang::Object *);
  ::java::util::concurrent::ConcurrentNavigableMap * tailMap(::java::lang::Object *);
  ::java::util::NavigableMap * tailMap(::java::lang::Object *, jboolean);
  ::java::util::concurrent::ConcurrentNavigableMap * tailMap(::java::lang::Object *, jboolean);
  ::java::util::SortedMap * headMap(::java::lang::Object *);
  ::java::util::concurrent::ConcurrentNavigableMap * headMap(::java::lang::Object *);
  ::java::util::NavigableMap * headMap(::java::lang::Object *, jboolean);
  ::java::util::concurrent::ConcurrentNavigableMap * headMap(::java::lang::Object *, jboolean);
  ::java::util::Set * keySet();
  ::java::util::NavigableMap * descendingMap();
  ::java::util::concurrent::ConcurrentNavigableMap * descendingMap();
public: // actually package-private
  static jboolean access$15(::java::util::concurrent::ConcurrentSkipListMap$SubMap *);
  static ::java::util::concurrent::ConcurrentSkipListMap$Node * access$16(::java::util::concurrent::ConcurrentSkipListMap$SubMap *);
  static ::java::util::concurrent::ConcurrentSkipListMap$Node * access$17(::java::util::concurrent::ConcurrentSkipListMap$SubMap *);
  static jboolean access$18(::java::util::concurrent::ConcurrentSkipListMap$SubMap *, ::java::lang::Object *);
  static jboolean access$19(::java::util::concurrent::ConcurrentSkipListMap$SubMap *, ::java::lang::Object *);
  static ::java::util::concurrent::ConcurrentSkipListMap * access$20(::java::util::concurrent::ConcurrentSkipListMap$SubMap *);
  static jboolean access$21(::java::util::concurrent::ConcurrentSkipListMap$SubMap *, ::java::lang::Object *);
private:
  static const jlong serialVersionUID = -7647078645895051609LL;
  ::java::util::concurrent::ConcurrentSkipListMap * __attribute__((aligned(__alignof__( ::java::util::AbstractMap)))) m;
  ::java::lang::Object * lo;
  ::java::lang::Object * hi;
  jboolean loInclusive;
  jboolean hiInclusive;
  jboolean isDescending;
  ::java::util::concurrent::ConcurrentSkipListMap$KeySet * keySetView;
  ::java::util::Set * entrySetView;
  ::java::util::Collection * valuesView;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_concurrent_ConcurrentSkipListMap$SubMap__
